package com.sugon.modules.mold.service;

import com.sugon.entity.ModuleMaintainPlanEntity;
import com.sugon.entity.ModuleMaintainPlanItemEntity;
import com.sugon.modules.base.service.IErmsBaseApproveManager;
import com.sugon.modules.mold.model.vo.DispatchParamVO;
import com.sugon.modules.mold.model.vo.MoldMaintenancePlanDelayApplyParamVO;
import com.sugon.modules.mold.model.vo.MoldMaintenancePlanExceptionReportParam;
import com.sugon.modules.mold.model.vo.MoldMaintenancePlanItemResultParam;

import java.util.Map;

/**
 * @author ： YuXD
 * @description： 模具维护业务Manager
 * @date ： 2020-08-13 上午 10:45
 * @version: 1.0
 */
public interface IMoldMaintenanceManager extends IErmsBaseApproveManager {

    /**
     * 添加模具维护计划项
     *
     * @param map
     * @return
     */
    String addModuleMaintenancePlanItem(Map<String, Object> map);

    /**
     * 给模具维护计划添加上一次该模具的维护项
     *
     * @return 返回异常信息，如果没有任何异常返回空字符串
     */
    String addLastTimeModuleMaintenanceItem(ModuleMaintainPlanEntity moduleMaintainPlan);

    /**
     * 完成设备维护项
     * 1、修改维护工单维护项状态
     * 2、检测当前维护工单的所有维护项是否已完成
     * 如果都已完成，那么修改维护工单状态
     *
     * @param moduleMaintainPlanItem 模具维护工单项
     * @return
     */
    boolean completeDevMaintenanceOption(ModuleMaintainPlanItemEntity moduleMaintainPlanItem);

    /**
     * 维修工确认开始维修工单
     * 1、更新派工单
     * 2、更新维修工单状态
     * 3、开启30分钟或者120分钟倒计时
     *
     * @param moduleMaintainTicket 模具维护工单
     * @return
     */
    boolean confirmRepair(ModuleMaintainPlanEntity moduleMaintainTicket);

    /**
     * 模具定期维护计划延期申请
     *
     * @param moldMaintenancePlanDelayApplyParam
     * @return
     */
    boolean applyChange(MoldMaintenancePlanDelayApplyParamVO moldMaintenancePlanDelayApplyParam);

    /**
     * 模具定期维护过程中添加异常记录
     *
     * @param moldMaintenancePlanExceptionReportParam 模具定期维护过程中发现的异常信息
     * @return
     */
    boolean addDevMaintenanceException(MoldMaintenancePlanExceptionReportParam moldMaintenancePlanExceptionReportParam);

    /**
     * 添加维护记录
     *
     * @param moldMaintenancePlanItemResultParam 模具维护计划项维护记录信息
     * @return
     */
    boolean addMaintenanceRecord(MoldMaintenancePlanItemResultParam moldMaintenancePlanItemResultParam);


    /**
     * 模具定期维护计划-提交审核
     *
     * @param moduleMaintainPlan 模具定期维护计划
     * @return
     */
    boolean commitApprove(ModuleMaintainPlanEntity moduleMaintainPlan);

    /**
     * 执行模具维修计划派工
     *
     * @param dispatchParam
     * @return
     */
    boolean dispatch(DispatchParamVO dispatchParam);

}
